package com.wgts.wgts.netmodle;


import com.wgts.wgts.netmodle.req.ActivityListRequest;
import com.wgts.wgts.netmodle.req.AddPutForwardReq;
import com.wgts.wgts.netmodle.req.AddShopCarRequest;
import com.wgts.wgts.netmodle.req.AffirmOrderRequest;
import com.wgts.wgts.netmodle.req.AppModleRequest;
import com.wgts.wgts.netmodle.req.AwardListReq;
import com.wgts.wgts.netmodle.req.ChangeGoodsNumberRequest;
import com.wgts.wgts.netmodle.req.CollectionProductRequest;
import com.wgts.wgts.netmodle.req.DelPutForwardReq;
import com.wgts.wgts.netmodle.req.DeleteShopRequest;
import com.wgts.wgts.netmodle.req.EditAddressRequest;
import com.wgts.wgts.netmodle.req.EditMyCenterMessageRequest;
import com.wgts.wgts.netmodle.req.FansSumReq;
import com.wgts.wgts.netmodle.req.FireRequest;
import com.wgts.wgts.netmodle.req.IssueEvaluateRequest;
import com.wgts.wgts.netmodle.req.IssurAfterSaleRequest;
import com.wgts.wgts.netmodle.req.LoginRequest;
import com.wgts.wgts.netmodle.req.MoreMoreGoodsInfoReq;
import com.wgts.wgts.netmodle.req.NavbarsRequset;
import com.wgts.wgts.netmodle.req.OperatingDataReq;
import com.wgts.wgts.netmodle.req.PlaceOrderRequest;
import com.wgts.wgts.netmodle.req.ProductClassRequest;
import com.wgts.wgts.netmodle.req.ProductEvaluateRequest;
import com.wgts.wgts.netmodle.req.ProductInfoRequest;
import com.wgts.wgts.netmodle.req.RefreshTokenRequest;
import com.wgts.wgts.netmodle.req.SearchShopListRequest;
import com.wgts.wgts.netmodle.req.SearchStoreListRequset;
import com.wgts.wgts.netmodle.req.ShopKeepAssetReq;
import com.wgts.wgts.netmodle.req.ShopKeepFansOrderReq;
import com.wgts.wgts.netmodle.req.ShopKeepFansReq;
import com.wgts.wgts.netmodle.req.SmsCodeRequest;
import com.wgts.wgts.netmodle.req.SpecialProductReq;
import com.wgts.wgts.netmodle.req.ThridPlatFromRequest;
import com.wgts.wgts.netmodle.req.TimeProductReq;
import com.wgts.wgts.netmodle.req.UpDownProductRequest;
import com.wgts.wgts.netmodle.req.UserPutForwardReq;
import com.wgts.wgts.netmodle.req.WXLoginRequest;
import com.wgts.wgts.netmodle.req.WgtsProductListReq;
import com.wgts.wgts.netmodle.resp.ActivityListEntity;
import com.wgts.wgts.netmodle.resp.AdvertisingEntity;
import com.wgts.wgts.netmodle.resp.AffirmOrderEntity;
import com.wgts.wgts.netmodle.resp.AfterSaleEntity;
import com.wgts.wgts.netmodle.resp.AllClassTypeEntity;
import com.wgts.wgts.netmodle.resp.AppModleEntity;
import com.wgts.wgts.netmodle.resp.AppUpdateEntity;
import com.wgts.wgts.netmodle.resp.ArticleEntity;
import com.wgts.wgts.netmodle.resp.AwardMoreListEntity;
import com.wgts.wgts.netmodle.resp.AwardPrizeEntity;
import com.wgts.wgts.netmodle.resp.AwardWinner;
import com.wgts.wgts.netmodle.resp.AwardWinnerDetail;
import com.wgts.wgts.netmodle.resp.ChangeGoodsPlanEntity;
import com.wgts.wgts.netmodle.resp.ClassBannerEntity;
import com.wgts.wgts.netmodle.resp.CollectListEntity;
import com.wgts.wgts.netmodle.resp.ComponentIndextActivityEntity;
import com.wgts.wgts.netmodle.resp.CurrentEntity;
import com.wgts.wgts.netmodle.resp.EditMyCenterMessageEntity;
import com.wgts.wgts.netmodle.resp.EditStoreEntity;
import com.wgts.wgts.netmodle.resp.EvaluateEntity;
import com.wgts.wgts.netmodle.resp.FansSumEntity;
import com.wgts.wgts.netmodle.resp.FireEntity;
import com.wgts.wgts.netmodle.resp.GoodProductEntity;
import com.wgts.wgts.netmodle.resp.GuessingAndAwardOrderEntity;
import com.wgts.wgts.netmodle.resp.GuessingListEntity;
import com.wgts.wgts.netmodle.resp.IdeaBackEntity;
import com.wgts.wgts.netmodle.resp.LoginEntity;
import com.wgts.wgts.netmodle.resp.MessageListEntity;
import com.wgts.wgts.netmodle.resp.MoreMoreGoodsInfoEntity;
import com.wgts.wgts.netmodle.resp.MoreMoreOpenEntity;
import com.wgts.wgts.netmodle.resp.MyCenterMessageEntity;
import com.wgts.wgts.netmodle.resp.MyJoinTaskEntity;
import com.wgts.wgts.netmodle.resp.MyOrderDetailsEntity;
import com.wgts.wgts.netmodle.resp.MyOrderListEntity;
import com.wgts.wgts.netmodle.resp.NavbarEntity;
import com.wgts.wgts.netmodle.resp.OperatingDataEntity;
import com.wgts.wgts.netmodle.resp.OrderEntity;
import com.wgts.wgts.netmodle.resp.ProductClassEntity;
import com.wgts.wgts.netmodle.resp.ProductEvaluateEntity;
import com.wgts.wgts.netmodle.resp.ProductInfoEntity;
import com.wgts.wgts.netmodle.resp.PutForwardTypeEntity;
import com.wgts.wgts.netmodle.resp.RecordSpreadEntity;
import com.wgts.wgts.netmodle.resp.RecordSummaryEntity;
import com.wgts.wgts.netmodle.resp.RefreshTokenEntity;
import com.wgts.wgts.netmodle.resp.ScreenEntity;
import com.wgts.wgts.netmodle.resp.SearchShopResultEntity;
import com.wgts.wgts.netmodle.resp.SearchStoreResultEntity;
import com.wgts.wgts.netmodle.resp.ShippingAddressEntity;
import com.wgts.wgts.netmodle.resp.ShopCarListEntity;
import com.wgts.wgts.netmodle.resp.ShopKeepAssetEntity;
import com.wgts.wgts.netmodle.resp.ShopKeepFansEntity;
import com.wgts.wgts.netmodle.resp.ShopKeepFansOrderSum;
import com.wgts.wgts.netmodle.resp.ShopKeepTaskEntity;
import com.wgts.wgts.netmodle.resp.ShopKeeperEntity;
import com.wgts.wgts.netmodle.resp.ShopKeeperListEntity;
import com.wgts.wgts.netmodle.resp.SpecialProductEntity;
import com.wgts.wgts.netmodle.resp.StoreMsgEntity;
import com.wgts.wgts.netmodle.resp.TaskDetailEntity;
import com.wgts.wgts.netmodle.resp.TaskListEntity;
import com.wgts.wgts.netmodle.resp.ThridPreBindEntity;
import com.wgts.wgts.netmodle.resp.TimeProductEntity;
import com.wgts.wgts.netmodle.resp.UnreadMessageEntity;
import com.wgts.wgts.netmodle.resp.UserInfoEntity;
import com.wgts.wgts.netmodle.resp.UserMoneyRecordEntity;
import com.wgts.wgts.netmodle.resp.VipMessageEntity;
import com.wgts.wgts.netmodle.resp.WgtsFansCountEntity;
import com.wgts.wgts.netmodle.resp.WgtsFansDetail;
import com.wgts.wgts.netmodle.resp.WgtsFansSummyEntity;
import com.wgts.wgts.netmodle.resp.WgtsKeepAssetEntity;
import com.wgts.wgts.netmodle.resp.WgtsProductListEntity;

import java.util.List;
import java.util.Map;

import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import rx.Observable;


/**
 */

public interface NetAPI {

    @FormUrlEncoded
    @POST(NetWorkConstant.LOGIN_IN)
    Observable<HttpResult<LoginEntity>>login(@QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Field(LoginRequest.ACCOUNT)String account, @Field(LoginRequest.SMSCODE)String smscode);

    @FormUrlEncoded
    @POST(NetWorkConstant.SEND_SMS)
    Observable<HttpResult<CurrentEntity>> sendSMS(@QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Field(SmsCodeRequest.PHONE) String phone, @Field(SmsCodeRequest.SCENE) String scene);

    @POST(NetWorkConstant.REFRESH_TOKEN)
    Observable<HttpResult<RefreshTokenEntity>> refreshToken(@Path(RefreshTokenRequest.REFRESHTOKEN) String refreshToken, @QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.USER_INFO)
    Observable<HttpResult<UserInfoEntity>> userInfo(@QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


   @GET(NetWorkConstant.PRODUCT_ONCE)
    Observable<HttpResult<List<ProductClassEntity>>> productClass(@QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query(ProductClassRequest.PARENTID) String parentid, @Query(ProductClassRequest.SCENE) String scene);

   @GET(NetWorkConstant.NAV_BAR)
    Observable<HttpResult<List<NavbarEntity>>> navbar(@QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
           , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query(NavbarsRequset.SCENE) String scene);

   @GET(NetWorkConstant.APP_MODLE)
    Observable<HttpResult<List<AppModleEntity>>> appModle(@QueryMap Map<String, String> bodymap
           , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
           , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query(AppModleRequest.SCENE) String scene, @Query(AppModleRequest.PARENTT_YPEID) int parentt_ypeid);


   @FormUrlEncoded
   @POST(NetWorkConstant.FIRE_USER)
    Observable<HttpResult<FireEntity>> fireUser(@Field(FireRequest.USERYQCODE) String userQcode
           , @Path(FireRequest.ACCESSTOKEN) String bodyToken, @QueryMap Map<String, String> bodymap
           , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
           , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

   @FormUrlEncoded
    @POST(NetWorkConstant.WX_LOGIN)
    Observable<HttpResult<LoginEntity>> wxLogin(@Field(WXLoginRequest.AVATAR) String avatar,@Field(WXLoginRequest.NICKNAME) String nickName, @Field(WXLoginRequest.THIRDPARTY) String thirdParty
           , @Field(WXLoginRequest.UID) String uid, @Field(WXLoginRequest.UNIONID) String unionId, @QueryMap Map<String, String> bodymap,
                                                @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken, @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

   @FormUrlEncoded
    @POST(NetWorkConstant.BIND_USER)
    Observable<HttpResult<LoginEntity>> bindUser(@Field(ThridPlatFromRequest.PHONE) String phone
           , @Field(ThridPlatFromRequest.SMSCODE) String smscode, @Field(ThridPlatFromRequest.UID) String uid
           , @Field(ThridPlatFromRequest.USERYQCODE) String useryqcode, @Field("thirdparty") String thirdparty
           , @Field(ThridPlatFromRequest.UNION_ID) String unionid, @QueryMap Map<String, String> bodymap
           , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
           , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.VIP_MESSAGE)
    Observable<HttpResult<List<VipMessageEntity>>> vipMessage(@QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
           , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.HOT_SEARCH)
    Observable<HttpResult<List<String>>> hotSearrch(@QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.SHOP_LIST)
    Observable<HttpResult<SearchShopResultEntity>> searchShopResult(@QueryMap Map<String, String> bodmap
    , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
            , @Query(SearchShopListRequest.PAGEINDEX) Integer pageIndex
    , @Query(SearchShopListRequest.PAGESIZE) Integer pageSize
            , @Query(SearchShopListRequest.TYPEID) Integer typeId
    , @Query(SearchShopListRequest.NAME) String name
    , @Query(SearchShopListRequest.BRANDID) Integer brandId
    , @Query(SearchShopListRequest.MINPRICE) Double minPrice
    , @Query(SearchShopListRequest.MAXPRICE) Double maxPrice
            , @Query(SearchShopListRequest.ORDER) String order
            , @Query(SearchShopListRequest.SORT) String sort,@Query(SearchShopListRequest.RECOMMEND) String recommend);

    @GET(NetWorkConstant.STORE_LIST)
    Observable<HttpResult<SearchStoreResultEntity>> searchStoreResult(@QueryMap Map<String, String> bodyMap
    , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
    , @Query(SearchStoreListRequset.NAME) String name, @Query(SearchStoreListRequset.PAGEINDEX) Integer pageIndex
    , @Query(SearchStoreListRequset.PAGESIZE) Integer pageSize);

    @GET(NetWorkConstant.PRODUCT_INFO)
    Observable<HttpResult<ProductInfoEntity>> productInfo(@Path(ProductInfoRequest.PRODUCTID) String productId
            , @QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.PRODUCT_EVALUATE)
    Observable<HttpResult<ProductEvaluateEntity>> productEvaluate(@Path(ProductEvaluateRequest.PRODUCTID) String productId, @Query(ProductEvaluateRequest.PAGEINDEX) String pageIndex, @Query(ProductEvaluateRequest.PAGESIZE) String pageSize
            , @QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken, @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.COLLECTION_PRODUCT)
    Observable<HttpResult<Integer>> collectionProduct(@Field(CollectionProductRequest.COLLECTED) int collected, @Field(CollectionProductRequest.PRODUCTID) int productid, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken, @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.UPDOWN_PRODUCT)
        Observable<HttpResult<Integer>> updownProduct(@Field(UpDownProductRequest.PRODUCTID) int productId, @Field(UpDownProductRequest.UPDOWN) int updown
            ,  @QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken, @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.SHOP_CAR)
    Observable<HttpResult<List<ShopCarListEntity>>> shopCarList(@QueryMap Map<String, String> bodyMap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.ADD_SHOP_CAR)
    Observable<HttpResult<CurrentEntity>> addShopCar(@Field(AddShopCarRequest.PRODUCTID) int productId, @Field(AddShopCarRequest.AMOUNT) int amount, @Field(AddShopCarRequest.SKUID) int skuId
            ,  @QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken, @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @GET(NetWorkConstant.VIP_GOODS)
    Observable<HttpResult<SearchShopResultEntity>> vipGood(@QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.CHANGEGOODSNUMBER)
    Observable<HttpResult<Integer>> changeGoodsNumber(@Path(ChangeGoodsNumberRequest.ID) int id
    , @Field(ChangeGoodsNumberRequest.AMOUNT) String amount, @QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.DELETE_GOODS)
    Observable<HttpResult<CurrentEntity>> deleteGoods(@Field(DeleteShopRequest.IDS) String ids
            , @QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.MY_CENTER_MESSAGE)
    Observable<HttpResult<MyCenterMessageEntity>> myCenterMessage(@QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.EDIT_MY_CENTER_MESSAGE)
    Observable<HttpResult<EditMyCenterMessageEntity>> editMyCenterMessage(
            @Field(EditMyCenterMessageRequest.UPDATE_TYPR) String updateType,
            @Field(EditMyCenterMessageRequest.USER_NICK_NAME) String userNickname,
            @Field(EditMyCenterMessageRequest.USER_IMAGE) String userImage,
            @Field(EditMyCenterMessageRequest.OPEN_ID) String openId,
            @Field(EditMyCenterMessageRequest.UNION_ID) String unionId,
            @Field(EditMyCenterMessageRequest.ORIGIN_USER_PHONE) String originUserPhone,
            @Field(EditMyCenterMessageRequest.ORIGIN_USER_PHONE_CODE) String originUserPhoneCode,
            @Field(EditMyCenterMessageRequest.NEW_UESR_PHONE) String newUserPhone,
            @Field(EditMyCenterMessageRequest.NEW_UESR_PHONE_CODE) String newUserPhoneCode,
            @Field(EditMyCenterMessageRequest.NEW_PAY_PASSWORD) String newPayPassword,
            @Field(EditMyCenterMessageRequest.NEW_CONFIRM_PASSWORD) String newConfirmPassword,
            @Field(EditMyCenterMessageRequest.NEW_PAY_PASSWORD_CODE) String newPayPasswordCode
            , @QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
    );


    @GET(NetWorkConstant.SHOP_KEEP_DATA)
    Observable<HttpResult<ShopKeeperEntity>> shopKeepDate(@QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);



    @GET(NetWorkConstant.ACTIVITY_LIST)
    Observable<HttpResult<List<ActivityListEntity>>> activityList(@Query(ActivityListRequest.ACTIVITYTYPE) String activityType,
                                                                  @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @GET(NetWorkConstant.SHOP_KEEP_TASK)
    Observable<HttpResult<List<ShopKeepTaskEntity>>>shopKeepTask(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.Shipping_Address)
    Observable<HttpResult<List<ShippingAddressEntity>>> shippingAddressList(@QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.Shipping_Address)
    Observable<HttpResult<CurrentEntity>> editAddress(@Field(EditAddressRequest.ADDRESS_ID) String addressId
    , @Field(EditAddressRequest.USER_NAME) String userName, @Field(EditAddressRequest.USER_PHONE) String userPhone
    , @Field(EditAddressRequest.PROVINCE) String province, @Field(EditAddressRequest.CITY) String city
    , @Field(EditAddressRequest.AREA) String area, @Field(EditAddressRequest.DETAILS) String details
    , @Field(EditAddressRequest.ADDRESS_STATE) String addressState, @QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.Normal_Address)
    Observable<HttpResult<CurrentEntity>> normalAddress(@Field("addressId") String addressId
            , @QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.Delete_Address)
    Observable<HttpResult<CurrentEntity>> deleteAddress(@Query("addressId") String addressId
    , @QueryMap Map<String, String> bodmap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.SHOP_KEEP_ASSET)
    Observable<HttpResult<List<WgtsKeepAssetEntity>>> shopKeepAsset(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
            , @Query(ShopKeepAssetReq.FLOWTYPE) String flowtype, @Query(ShopKeepAssetReq.PAGEINDEX)String pageindex
            , @Query(ShopKeepAssetReq.PAGESIZE) String pagesize);


    @GET(NetWorkConstant.SHOP_KEEP_FANS_ORDER)
    Observable<HttpResult<ShopKeepAssetEntity>> shopKeepFansOrder(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
            , @Query(ShopKeepAssetReq.FLOWTYPE) String flowtype, @Query(ShopKeepAssetReq.PAGEINDEX)String pageindex
            ,@Query(ShopKeepAssetReq.PAGESIZE) String pagesize);


    @GET(NetWorkConstant.SHOP_KEEP_FANS)
    Observable<HttpResult<ShopKeepFansEntity>> shopKeepFans(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query(ShopKeepFansReq.LEVEL) int level, @Query(ShopKeepFansReq.PAGEINDEX)int pageindex
            ,@Query(ShopKeepFansReq.PAGESIZE) int pagesize, @Query(ShopKeepFansReq.USERID) int userId);

    @GET(NetWorkConstant.RECORD_SPREAD)
    Observable<HttpResult<List<RecordSpreadEntity>>> recordSpread(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query("userRole") String userRole);


    @GET(NetWorkConstant.RECORD_SUMMARY)
    Observable<HttpResult<RecordSummaryEntity>> recodeSummary(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query("userRole") String userRole);

    @GET(NetWorkConstant.WITH_DRAW)
    Observable<HttpResult<List<PutForwardTypeEntity>>> putForwardList(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @POST(NetWorkConstant.DELWITH_DRAW)
    Observable<HttpResult<CurrentEntity>> delPutForWard(@Path(DelPutForwardReq.CARDID) String cardId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.WITH_DRAW)
    Observable<HttpResult<PutForwardTypeEntity>> addForWard(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
            , @Field(AddPutForwardReq.BANKNAME) String bankname, @Field(AddPutForwardReq.CARDCODE) String cardcode
            , @Field(AddPutForwardReq.VERIFYCODE) String verifycode, @Field(AddPutForwardReq.WITHDRAWTYPE)String withdrawtype, @Field(AddPutForwardReq.USERNAME)String username, @Field(AddPutForwardReq.BANKACCOUNT)String bankAccount);


    @FormUrlEncoded
    @POST(NetWorkConstant.USER_APPLY)
    Observable<HttpResult<CurrentEntity>> userPutForward(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Field(UserPutForwardReq.CARDID) String carId,
                                                         @Field(UserPutForwardReq.MONEY) String money, @Field(UserPutForwardReq.PAYPASSWORD) String paypassword);


    @POST(NetWorkConstant.Affirm_Order)
    Observable<HttpResult<AffirmOrderEntity>> affirmOrder(@Body AffirmOrderRequest products
    ,@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);



    @GET(NetWorkConstant.FANS_SUM)
    Observable<HttpResult<FansSumEntity>> fansSum(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query(FansSumReq.RELATIONLEVEL) String relationlevel);

    @GET(NetWorkConstant.Collect_list)
    Observable<HttpResult<CollectListEntity>> collectList(@Query("pageIndex") Integer pageIndex, @Query("pageSize") Integer pageSize
            ,@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.Delete_Collect)
    Observable<HttpResult<CurrentEntity>> deleteCollect(@Field("productIds") String productIds
            ,@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @POST(NetWorkConstant.Place_Order)
    Observable<HttpResult<OrderEntity>> placeOrder(@Body PlaceOrderRequest products
            ,@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @GET(NetWorkConstant.TIME_PRODUCT)
    Observable<HttpResult<TimeProductEntity>> timeProduct(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query(TimeProductReq.ACTIVITYID) int activityid
            , @Query(TimeProductReq.BEGINTIME) String begintime, @Query(TimeProductReq.ENDTIME) String endtime
            , @Query(TimeProductReq.PAGEINDEX) String pageindex, @Query(TimeProductReq.PAGESIZE) String pagesize);


    @GET(NetWorkConstant.ALL_CLASS_TYPE)
    Observable<HttpResult<List<AllClassTypeEntity>>> allClassType(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.Screen)
    Observable<HttpResult<ScreenEntity>> screen(@Query("typeId") Integer typeId
    ,@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.Place_Order)
    Observable<HttpResult<List<MyOrderListEntity>>> myOrderList(@Query("orderState") String orderState
    , @Query("pageIndex") Integer pageIndex, @Query("pageSize") Integer pageSize
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @POST(NetWorkConstant.Cancel_Order)
    Observable<HttpResult<CurrentEntity>> cancelOrder(@Path("orderId") String orderId
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.Continue_Pay)
    Observable<HttpResult<OrderEntity>> continuePay(@Field("orderId") String orderId
    , @Field("payType") String payType, @Field("payPassword") String payPassword
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.My_Order_Detail)
    Observable<HttpResult<MyOrderDetailsEntity>> myOrderDetails(@Path("orderId") int orderId
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @GET(NetWorkConstant.SHOP_KEEP_MANAGEMENT_DATA)
    Observable<HttpResult<OperatingDataEntity>> shopKeepManagementData(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
            , @Query(OperatingDataReq.ORDERTRADESTATUS) String ordertradestatus, @Query(OperatingDataReq.PAGEINDEX) String pageIndex
            , @Query(OperatingDataReq.DAY) String day);

    @POST(NetWorkConstant.Affirm_Take_Goods)
    Observable<HttpResult<CurrentEntity>> takeGoods(@Path("orderId") String orderId
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.SPECIAL_PRODUCT)
    Observable<HttpResult<SpecialProductEntity>> specialProduct(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version
            , @Query(SpecialProductReq.ACTIVITYID) int activityid, @Query(SpecialProductReq.PAGEINDEX) int pageindex, @Query(SpecialProductReq.PAGESIZE) int pagesize);

    @GET(NetWorkConstant.SHOP_KEEP_FANS_ORDER_LIST)
    Observable<HttpResult<OperatingDataEntity>> shopKeepFansOrderList(@Path(ShopKeepFansOrderReq.FANSUSERID) String userId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query(ShopKeepFansOrderReq.PAGEINDEX) String pageIndex);

    @GET(NetWorkConstant.SHOP_KEEP_FANS_ORDER_SUM)
    Observable<HttpResult<ShopKeepFansOrderSum>> shopKeepFansOrderSum(@Path("fansUserId") String userId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.Change_Goods_Plan)
    Observable<HttpResult<List<ChangeGoodsPlanEntity>>> changeGoodsPlan(@Path("orderId") Integer orderId
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.Shopkeeper_List)
    Observable<HttpResult<ShopKeeperListEntity>> shopKeeperList(@Query("shopId") Integer userId
    , @Query("pageIndex") Integer pageIndex, @Query("pageSize") Integer pageSize
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.Edit_Store)
    Observable<HttpResult<EditStoreEntity>> editStore(@Field("shopName") String shopName
    , @Field("shopImage") String shopImage, @Field("shopDesc") String shopDesc
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @GET(NetWorkConstant.MORE_MORE_ACTION)
    Observable<HttpResult<MoreMoreGoodsInfoEntity>> moreMoreAction(@Path(MoreMoreGoodsInfoReq.DRAWID) int drawid, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.Award_List)
    Observable<HttpResult<List<AwardMoreListEntity>>> awardMoreList(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.GUESSING_AWARD_ORDER)
    Observable<HttpResult<List<GuessingAndAwardOrderEntity>>> guessAndAwardList(
            @Query("drawAllType") Integer drawAllType
            ,@Query("pageIndex") Integer pageIndex
            , @Query("pageSize") Integer pageSize, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.COMPONENT_INDEX_ACTIVITY)
    Observable<HttpResult<List<ComponentIndextActivityEntity>>> componentIndexActivity(@Query("pId") Integer pId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @POST(NetWorkConstant.LAUNCH_MORE_MORE_ACTION)
    Observable<HttpResult<MoreMoreGoodsInfoEntity>> launchMoreMoreAction(@Path("shareId") int shareId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    /**
     * 订单列表进入详情
     * @param shareId
     * @param bodymap
     * @param accessToken
     * @param version
     * @return
     */
    @GET(NetWorkConstant.LAUNCH_MORE_MORE_ACTION)
    Observable<HttpResult<MoreMoreGoodsInfoEntity>> moreOrderToDetail(@Path("shareId") int shareId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.GUESSING_LIST)
    Observable<HttpResult<List<GuessingListEntity>>> guessingList(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.EVALUATE)
    Observable<HttpResult<List<EvaluateEntity>>> evaluate(@Path("orderId") String orderId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @POST(NetWorkConstant.ISSUE_EVALUATE)
    Observable<HttpResult<CurrentEntity>> issueEvaluate(@Body IssueEvaluateRequest evaluateList
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.STORE_MSG)
    Observable<HttpResult<StoreMsgEntity>> storeMsg(@Query("shopId") Integer shopId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.AFTER_SALE)
    Observable<HttpResult<List<String>>> afterSale(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @POST(NetWorkConstant.ISSUE_AFTER_SALE)
    Observable<HttpResult<CurrentEntity>> issueAfterSale(@Body IssurAfterSaleRequest request
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.AWARD_ENSURE)
    Observable<HttpResult<CurrentEntity>> awardEnsure(@Field("winningId") Integer winningId, @Field("addressId")String addressId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @GET(NetWorkConstant.AWARD_WINNER)
    Observable<HttpResult<AwardWinner>> awardWinner(@Path("winningId") Integer winningId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.AWARD_LIST)
    Observable<HttpResult<List<AwardPrizeEntity>>> awardPrize(@Query(AwardListReq.DRAWALLTYPE) Integer drawalltype
            , @Query(AwardListReq.PAGEINDEX) Integer pageindex, @Query(AwardListReq.PAGESIZE) Integer pagesize, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);



    @GET(NetWorkConstant.JOIN_ACTIVITY_LIST)
    Observable<HttpResult<List<GuessingAndAwardOrderEntity>>> joinActivityList(
            @Query("drawAllType") Integer drawAllType
            ,@Query("pageIndex") Integer pageIndex
            , @Query("pageSize") Integer pageSize, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @POST(NetWorkConstant.MORE_MORE_OPEN)
    Observable<HttpResult<MoreMoreOpenEntity>> moreMoreOpen(@Path("shareId") Integer shareId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.USER_PUT_AWARD_ORDER)
    Observable<HttpResult<List<UserMoneyRecordEntity>>> putAwardOrder(@Query("pageIndex") int pageIndex, @Query("pageSize") int pageSize  , @QueryMap Map<String, String> bodymap,@Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @GET(NetWorkConstant.AWARD_INFO)
    Observable<HttpResult<AwardWinnerDetail>> putAwardInfo(@Path("winningId") Integer winningId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);


    @POST(NetWorkConstant.ENSURE_AWARD_ORDER)
    Observable<HttpResult<CurrentEntity>> ensureAwardOrder(@Path("winningId") Integer winningId , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @FormUrlEncoded
    @POST(NetWorkConstant.IDEA_BACK)
    Observable<HttpResult<IdeaBackEntity>> ideaBack(@Field("adviceUserPhone") String adviceUserPhone
    , @Field("adviceContent") String adviceContent, @Field("adviceImages") String adviceImages
    , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version);

    @GET(NetWorkConstant.APP_UPGRADE)
    Observable<HttpResult<AppUpdateEntity>> appUpdate(@Query("os") String os
            , @Query("channel") String channel, @Query("version") String version
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @GET(NetWorkConstant.APP_ADVERTISING)
    Observable<HttpResult<AdvertisingEntity>> advertising(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);


    @GET(NetWorkConstant.CLASS_BANNER)
    Observable<HttpResult<List<ClassBannerEntity>>> classBanner(@Query("typeId") Integer typeId, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @GET(NetWorkConstant.GOOD_PRODUCT)
    Observable<HttpResult<GoodProductEntity>> goodProduct(@Query("typeId") Integer typeId, @Query("pageIndex") Integer pageIndex
            , @Query("pageSize") Integer pageSize, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion );

    @GET(NetWorkConstant.UNREAD_MESSAGE)
    Observable<HttpResult<List<UnreadMessageEntity>>> unreadMessage(@Query("typeCodes") String typeCodes
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @FormUrlEncoded
    @POST(NetWorkConstant.CLEAR_MESSAGE)
    Observable<HttpResult<CurrentEntity>> clearMessage(@Field("typeCodes") String typeCodes
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @GET(NetWorkConstant.MESSAGE_LIST)
    Observable<HttpResult<List<MessageListEntity>>> messageList(@Query("pageIndex") Integer pageIndex
            , @Query("pageSize") Integer pageSize
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);


    /**
     * 活动商品详情
     * @param productId
     * @param bodymap
     * @param accessToken
     * @param version
     * @return
     */
    @GET(NetWorkConstant.ACTION_PRODUCT)
    Observable<HttpResult<ProductInfoEntity>> activityProductInfo(@Path("productId") Integer productId
            , @QueryMap Map<String, String> bodymap, @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String version, @Query("activityId") Integer activityId
            , @Query("beginTime") String beginTime, @Query("endTime") String endTime);


    @GET(NetWorkConstant.SHOP_KEEP_PHONE)
    Observable<HttpResult<String>> shopKeepPhone(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);


    @POST(NetWorkConstant.THRID_PRE_BIND)
    @FormUrlEncoded
    Observable<HttpResult<ThridPreBindEntity>> thridPreBind
            (@Field("thirdparty") String thirdparty, @Field("uid") String uid, @Field("unionid") String unionid
                    , @Field("phone") String phone, @Field("smsCode") String smsCode, @QueryMap Map<String, String> bodymap
                    , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
                    , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @FormUrlEncoded
    @POST(NetWorkConstant.LOGIN_IN)
    Observable<HttpResult<LoginEntity>> WgtsLogin(@Field("account") String username
    , @Field("password") String password,@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @FormUrlEncoded
    @POST(NetWorkConstant.REGISTER)
    Observable<HttpResult<LoginEntity>> register(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion
            ,@Field("username") String username
    ,@Field("password") String password, @Field("smsCode") String smsCode
    , @Field("inviteCode") String inviteCode);

    @FormUrlEncoded
    @POST(NetWorkConstant.PHONE_AFFIRM)
    Observable<HttpResult<CurrentEntity>> phoneAffirm(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion
            ,@Field("phone") String phone
            ,@Field("scene") String scene, @Field("smsCode") String smsCode);

    @FormUrlEncoded
    @POST(NetWorkConstant.RESET_PASSWORD)
    Observable<HttpResult<CurrentEntity>> resetPassword(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion
            ,@Field("password") String password
            ,@Field("confirmPassword") String confirmPassword, @Field("smsCode") String smsCode
    , @Field("phone") String phone);


    @GET(NetWorkConstant.SHOP_LIST)
    Observable<HttpResult<List<WgtsProductListEntity>>> wgtsProductList(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion
            , @Query(WgtsProductListReq.PRODUCT_TYPE) String productType
            , @Query(WgtsProductListReq.PAGE_INDEX) String pageIndex, @Query(WgtsProductListReq.PAGE_SIZE) String pageSize);


    @GET(NetWorkConstant.WGTS_FAN_COUNT)
    Observable<HttpResult<List<WgtsFansCountEntity>>> wgtsFansCount(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);


    @GET(NetWorkConstant.FANS_SUM)
    Observable<HttpResult<List<WgtsFansSummyEntity>>> wgtsFansSum(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion, @Query("relationLevel") String relationLevel);


    @GET(NetWorkConstant.SHOP_KEEP_FANS)
    Observable<HttpResult<List<WgtsFansDetail>>> wgtsFansDetail(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion
            , @Query("relationLevel") String relationLevel, @Query("userRole") String userRole
            , @Query("pageIndex") String pageIndex, @Query("pageSize") String pageSize);


    @GET(NetWorkConstant.WGTS_ARTICLE)
    Observable<HttpResult<List<ArticleEntity>>> wgtsArticle(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion
            , @Query("pageIndex") String pageIndex, @Query("pageSize") String pageSize);

    @GET(NetWorkConstant.TASK_LIST)
    Observable<HttpResult<List<TaskListEntity>>> taskList(@QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @GET(NetWorkConstant.TASK_DETAILS)
    Observable<HttpResult<TaskDetailEntity>> taskDetails(@Path("taskId") Integer taskId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @GET(NetWorkConstant.JOIN_TASK_DETAILS)
    Observable<HttpResult<TaskDetailEntity>> joinTaskDetails(@Path("userTaskId") Integer userTaskId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @FormUrlEncoded
    @POST(NetWorkConstant.ISSUE_TASK)
    Observable<HttpResult<Integer>> issueTask(@Field("taskId") Integer taskId,
                                                       @Field("taskCode") String taskCode,
                                                       @Field("taskUrl") String taskUrl
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @FormUrlEncoded
    @POST(NetWorkConstant.SUBMIT_TASK)
    Observable<HttpResult<Integer>> submitTask(@Field("taskId") Integer taskId
            , @Field("userTaskId") Integer userTaskId
            , @Field("completeUrl") String completeUrl
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @GET(NetWorkConstant.MY_JOIN_TASK)
    Observable<HttpResult<List<MyJoinTaskEntity>>> myJoinTask(@Query("pageIndex") Integer pageIndex
            , @Query("pageSize") Integer pageSize, @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @GET(NetWorkConstant.VERIFY_TASK)
 Observable<HttpResult<CurrentEntity>> verifyTask(@Path("userTaskId") Integer userTaskId
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);

    @FormUrlEncoded
    @POST(NetWorkConstant.AFFIRM_ALIPAY)
 Observable<HttpResult<CurrentEntity>> affirmAlipay(@Field("orderCode") String orderCode
    , @Field("payType") String payType
            , @QueryMap Map<String, String> bodymap
            , @Header(NetWorkConstant.PUBLIC_ACCESSTOKEN) String accessToken
            , @Header(NetWorkConstant.PUBLIC_PLATVERSION) String platVersion);
}

